package main

import (
	"fmt"
	"sync"
)

var testMap = make(map[int]int)
var lock sync.Mutex
//var wgp sync.WaitGroup

func t(n int) {
	// 如果没有任何操作，在开启协程时，会导致资源竞争
	// 解决方式1：加互斥锁
	//方式2：管道
	lock.Lock()
	num := 1
	for i:=1;i<=n;i++{
		num += i
	}
	testMap[n] = num
	lock.Unlock()
	wg.Done()
}

func main() {
	wg.Add(200)  //一次加入所有计数器
	for i:=1;i<=200;i++{
		//wgp.Add(1)  //也可以开一个协程加入一个
		go t(i)
	}
	// 获取数据也加锁
	//lock.Lock()
	for i, v := range testMap{
		fmt.Println(i, v)
	}
	//lock.Unlock()
	wg.Wait()
}